import { setToken, getToken } from '@/utils/auth'
import { login, getProfile, getUserDetailById } from '@/api/user'
import { Message } from 'element-ui'
import { resetRouter } from '@/router/index'
// 0初始化数据
const state = {
  // 0.1初始化设置token
  token: getToken(),
  // 0.2用户数据
  userInfo: {}
}
// 1同步修改数据
const mutations = {
  // 1.存入token
  setToken(state, payload) {
    // (1)修改token
    state.token = payload
    // (2)将token存入cookies
    setToken(payload)
  },
  // 2.用户信息
  setUserInfo(state, payload) {
    state.userInfo = payload
  }
}
// 2.异步更新数据
const actions = {
  // 2.1用户登录
  async userLogin(context, data) {
    const res = await login(data)
    // 调用mutations的setToken
    context.commit('setToken', res.data)
    Message.success('登录成功')
  },
  // 2.2 获取用户信息
  async getUserInfo(context) {
    // (1)发送请求
    const res = await getProfile()
    // (2)获取用户详细信息
    const res2 = await getUserDetailById(res.data.userId)
    // (3)提交mutations
    context.commit('setUserInfo', { ...res.data, ...res2.data })
  },
  // 2.3退出功能,清空token和用户数据
  userLogout(context) {
    context.commit('setToken', '')
    context.commit('setUserInfo', {})
    // 重置路由表
    resetRouter()
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}

